#ifndef DATENVERWALTUNG_H
#define DATENVERWALTUNG_H

#include <QtCore>

class QSqlTableModel;
class QSqlRelationalTableModel;
class Datenverwaltung : public QObject
{
    Q_OBJECT
  public:
    explicit		      Datenverwaltung(QObject *eltern = 0);
    QSqlTableModel*	      KategorieModell(){return K_Kategorien;}
    QSqlRelationalTableModel* PostenlisteModell(){return K_Posten;}
    QSqlTableModel*	      Ausgabenauswertung(){return K_Ausgaben;}
    const QString&	      Datenbankversion()const{return K_Datenbankversion;}
    void		      KategorieAnlegen(const QString &name);
    void		      PostenAnlegen(const QDate& datum,const QString& bezeichnung,const double& wert,
					    const QString& kategorie);
    void		      KategorieaenderungSpeichern();
    void		      PostenJahr(const uint &jahr);
    void		      PostenMonat(const uint &monat);
    const bool		      KategorieLoeschen(const int &welche);
    const bool		      PostenLoeschen(const int &welche);
    const bool&		      Bereitstatus()const{return K_Bereit;}

  signals:
    void		      Fehler(const QString  &meldung);
    void		      Warnung(const QString &meldung);
    void		      Bereit();
  private:
    void		      FilterSetzen();
    uint		      K_Filterjahr;
    uint		      K_Filtermonat;
    bool		      K_Bereit;
    QString		      K_Datenbankversion;
    bool		      DatenbankAnlegen(const QString &datei);
    bool		      DatenbankOeffnen(const QString &datei);
    bool		      ModelleLaden();
    bool		      KategorieInBenutzung(const QString &welche);
    QSqlTableModel*	      K_Kategorien;
    QSqlRelationalTableModel* K_Posten;
    QSqlTableModel*	      K_Ausgaben;

  public slots:
    void	    Laden();
};

#endif // DATENVERWALTUNG_H
